Git + Jenkins 自动化 NGINX 发布简易实现 |
您所在的位置:网站首页 › docker nginx 配置 › Git + Jenkins 自动化 NGINX 发布简易实现 |
概述
之前基于 GitLab + Jenkins 实现了简单的 NGINX 的自动化发布。 具体包含如下的组件: GitLab 包括 GItLab 的 WebHook; Jenkins 及其插件: Generic Webhook TriggerPublish Over SSH🧠疑问: 为什么不用 Ansible? 答:这里说明下,之所以不用 Ansible,是因为这个环境默认没有安装 Ansible,而且 Publish Over SSH 也足够用了,就没再用 Ansible 了。 详细说明这里有 3 个几个自动化 job,如下: 说明: 配置 WebHook以 test-intranet-nginx 为例进行说明. 进入该项目 -> 设置 -> 集成. 如下图:![]() ![]() 说明: URL地址可以在 Jenkins的对应插件里找到.Trigger可以按需调整. 在 Jenkins 的 系统配置*里 -> *Publish over SSH: 如下图: 填入: KeySSH Server的: name(用于给 jenkins 用户识别的用户名)Hostname(目标机器的 IP 地址)Username(目标机器的 OS 用户)Remote Directory(需要把文件发送到的目标机器的目录地址)说明: 一般情况下,对于 NGINX, 目录是2个, 为: /etc/nginx(放配置 *.conf) 和 /usr/share/nginx/html(放静态 web 文件) 以下图 Job 为例: 首先配置 源码管理, 如下图: 填入: 仓库 URL认证信息(如果是公开的库, 就不需要认证信息)分支: master(按需调整)源码库的信息: 本例中,类型是: gitlabURLGitLab 的 Version然后配置 构建触发器, 如下图: 说明: 详细使用请在浏览器输入图中的 URL 进一步查看. Variable (使用默认配置)Expression (使用默认配置)Token最后, 是 构建后操作(实际「构建」过程没做任何事情). 如下图: 注意: 如果有多台 nginx 要同时发, 就要在这里同时写上多台 SSH Server. Name: 下拉框选择对应NameTransfers Source files: 源文件, 位于: iaas_web_xxxx/conf/**/*Remove prefix: 需要移除的前缀, 为: iaas_web_xxxx/. 移除后, 示例为: conf/nginx.confRemote directory: 不填写就是之前填写的目录, 一般为 /etc/nginx. 那么示例就发布到: /etc/nginx + conf/nginx.conf, 即: /etc/nginx/conf/nginx.confExec command: 文件传输过去后需要执行的命令. 为: nginx -t && nginx -s reload(或:sudo systemctl reload nginx). 即, 先 -t 验证配置是否有语法错误, 然后再 reload 发布. 如果验证有问题, jenkins pipeline 会异常, 变黄或变红. 发布流程 用户通过 IDE + Git, 在自己本地修改 NGINX Conf, 并最终 push 或 merge(也会触发push的动作) 到 master上GitLab 接收到 push event, 触发 webhook 调用: https://example.com/generic-webhook-trigger/invoke?token=Jdy0bTQafyfUUBxJw33kJenkins 收到 webhook trigger. 并结合 filter 的 Expression 进行判断,确认匹配,则开始自动启动一次 Job.该 Job 过程为: 将存有 nginx 配置的仓库 pull 到 jenkins.通过 Publish over SSH, 将相关目录和文件传输到 SSH Server 的指定目录执行 nginx 命令, 进行发布. 结束.提示: 如果因为其他异常, 导致未自动发布,那么也可以手动点击 Job 页面的: 立即构建 进行手动触发 可以通过首图的 rss 订阅: Atom feed 失败, 这样发布失败你就会及时收到邮件. 三人行, 必有我师; 知识共享, 天下为公. 本文由东风微鸣技术博客 EWhisper.cn 编写. |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |